This invention pertains to the installation of drivers for a computer system, and more particularly to automating driver installation.
When a user adds a new hardware peripheral or new software (called a device below) to a computer, the computer needs to know how to use the new device. Typically, this is done with a driver. Drivers interface between an operating system and the device, and instruct the device how to perform the tasks requested by the operating system. This eliminates the need for the operating system to know how to communicate with every possible device. The operating system simply sends the instruction to the driver in a standardized format, and the driver translates the instruction into a format understood by the device. For example, in the case of a graphics adapter, the operating system sends the instructions to display an image. It is the driver""s responsibility to send commands to the graphics adapter to display the image in a language the graphics adapter understands.
But with the number of devices constantly growing, the number of combinations of devices (and thus of drivers) is increasing exponentially. Without testing every combination of drivers, it is impossible to be certain that a particular combination of drivers will inter-operate properly. This combinatorics problem is further compounded by the fact that suppliers continually update their drivers. There may be, for example, five different versions of a driver for a particular model of a particular device, each version of the driver introducing new features over the last. Even if two drivers inter-operate properly, there is no guarantee that new versions will continue to inter-operate properly.
In the past, the responsibility for testing combinations of drivers lay with the user. If a particular combination of drivers did not inter-operate properly, it was the user""s responsibility to determine the problem and correct it, for example, by changing the settings of the driver or its associated device. This process took a lot of time, as users would have to experiment to determine where the problem lay. The process could also be frustrating, as the problem occasionally could not even be corrected by changing a setting, and the user would be forced to exclude one of the desired devices. Further, the user would have to undertake this process every time he or she wanted to update to newer versions of installed drivers. Even if the older drivers had inter-operated properly, the user would still have to cross his or her fingers and hope that the new drivers would work as well. Upgrading to a newer version of the Basic Input/Output Software (BIOS) could be even more problematic: the computer might fail to boot up at all, making it impossible to revert to the older version of the BIOS.
The present invention addresses this and other problems associated with the prior art.